home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / fenv.h < prev    next >
C/C++ Source or Header  |  2009-10-07  |  5KB  |  137 lines

  1. /* Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
  2.    This file is part of the GNU C Library.
  3.  
  4.    The GNU C Library is free software; you can redistribute it and/or
  5.    modify it under the terms of the GNU Lesser General Public
  6.    License as published by the Free Software Foundation; either
  7.    version 2.1 of the License, or (at your option) any later version.
  8.  
  9.    The GNU C Library is distributed in the hope that it will be useful,
  10.    but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.    Lesser General Public License for more details.
  13.  
  14.    You should have received a copy of the GNU Lesser General Public
  15.    License along with the GNU C Library; if not, write to the Free
  16.    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
  17.    02111-1307 USA.  */
  18.  
  19. /*
  20.  * ISO C99 7.6: Floating-point environment    <fenv.h>
  21.  */
  22.  
  23. #ifndef _FENV_H
  24. #define _FENV_H    1
  25.  
  26. #include <features.h>
  27.  
  28. /* Get the architecture dependend definitions.  The following definitions
  29.    are expected to be done:
  30.  
  31.    fenv_t    type for object representing an entire floating-point
  32.         environment
  33.  
  34.    FE_DFL_ENV    macro of type pointer to fenv_t to be used as the argument
  35.         to functions taking an argument of type fenv_t; in this
  36.         case the default environment will be used
  37.  
  38.    fexcept_t    type for object representing the floating-point exception
  39.         flags including status associated with the flags
  40.  
  41.    The following macros are defined iff the implementation supports this
  42.    kind of exception.
  43.    FE_INEXACT        inexact result
  44.    FE_DIVBYZERO        division by zero
  45.    FE_UNDERFLOW        result not representable due to underflow
  46.    FE_OVERFLOW        result not representable due to overflow
  47.    FE_INVALID        invalid operation
  48.  
  49.    FE_ALL_EXCEPT    bitwise OR of all supported exceptions
  50.  
  51.    The next macros are defined iff the appropriate rounding mode is
  52.    supported by the implementation.
  53.    FE_TONEAREST        round to nearest
  54.    FE_UPWARD        round toward +Inf
  55.    FE_DOWNWARD        round toward -Inf
  56.    FE_TOWARDZERO    round toward 0
  57. */
  58. #include <bits/fenv.h>
  59.  
  60. __BEGIN_DECLS
  61.  
  62. /* Floating-point exception handling.  */
  63.  
  64. /* Clear the supported exceptions represented by EXCEPTS.  */
  65. extern int feclearexcept (int __excepts) __THROW;
  66.  
  67. /* Store implementation-defined representation of the exception flags
  68.    indicated by EXCEPTS in the object pointed to by FLAGP.  */
  69. extern int fegetexceptflag (fexcept_t *__flagp, int __excepts) __THROW;
  70.  
  71. /* Raise the supported exceptions represented by EXCEPTS.  */
  72. extern int feraiseexcept (int __excepts) __THROW;
  73.  
  74. /* Set complete status for exceptions indicated by EXCEPTS according to
  75.    the representation in the object pointed to by FLAGP.  */
  76. extern int fesetexceptflag (__const fexcept_t *__flagp, int __excepts) __THROW;
  77.  
  78. /* Determine which of subset of the exceptions specified by EXCEPTS are
  79.    currently set.  */
  80. extern int fetestexcept (int __excepts) __THROW;
  81.  
  82.  
  83. /* Rounding control.  */
  84.  
  85. /* Get current rounding direction.  */
  86. extern int fegetround (void) __THROW;
  87.  
  88. /* Establish the rounding direction represented by ROUND.  */
  89. extern int fesetround (int __rounding_direction) __THROW;
  90.  
  91.  
  92. /* Floating-point environment.  */
  93.  
  94. /* Store the current floating-point environment in the object pointed
  95.    to by ENVP.  */
  96. extern int fegetenv (fenv_t *__envp) __THROW;
  97.  
  98. /* Save the current environment in the object pointed to by ENVP, clear
  99.    exception flags and install a non-stop mode (if available) for all
  100.    exceptions.  */
  101. extern int feholdexcept (fenv_t *__envp) __THROW;
  102.  
  103. /* Establish the floating-point environment represented by the object
  104.    pointed to by ENVP.  */
  105. extern int fesetenv (__const fenv_t *__envp) __THROW;
  106.  
  107. /* Save current exceptions in temporary storage, install environment
  108.    represented by object pointed to by ENVP and raise exceptions
  109.    according to saved exceptions.  */
  110. extern int feupdateenv (__const fenv_t *__envp) __THROW;
  111.  
  112.  
  113. /* Include optimization.  */
  114. #ifdef __OPTIMIZE__
  115. # include <bits/fenvinline.h>
  116. #endif
  117.  
  118. #ifdef __USE_GNU
  119.  
  120. /* Enable individual exceptions.  Will not enable more exceptions than
  121.    EXCEPTS specifies.  Returns the previous enabled exceptions if all
  122.    exceptions are successfully set, otherwise returns -1.  */
  123. extern int feenableexcept (int __excepts) __THROW;
  124.  
  125. /* Disable individual exceptions.  Will not disable more exceptions than
  126.    EXCEPTS specifies.  Returns the previous enabled exceptions if all
  127.    exceptions are successfully disabled, otherwise returns -1.  */
  128. extern int fedisableexcept (int __excepts) __THROW;
  129.  
  130. /* Return enabled exceptions.  */
  131. extern int fegetexcept (void) __THROW;
  132. #endif
  133.  
  134. __END_DECLS
  135.  
  136. #endif /* fenv.h */
  137.